import requests
import time
import os
import random

# 定义要枚举的数字范围 (起始值, 结束值+1)
# 示例：从 16990 到 17000 (共 11 个页面)
START_NUM = 499
END_NUM = 40001  # 实际到 17000 结束

# 全范围是 range(0, 100000)，请谨慎使用！

BASE_URL = "https://www.jcdjpool.com/music/{}.html"

# 每次请求之间的延迟范围（秒），防止服务器过载或被封锁
MIN_DELAY = 0.5
MAX_DELAY = 1.0

for i in range(START_NUM, END_NUM):
    # 格式化数字为五位数，并补足前导零 (例如 16990)
    num_str = str(i).zfill(5) 
    url = BASE_URL.format(num_str)
    # 创建保存文件的目录路径
    save_dir = "music-dump"

    # 确保目录存在
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)

    # 在目录中创建文件路径
    file_name = os.path.join(save_dir, f"{num_str}.html")
    
    # 检查文件是否已存在，如果存在则跳过
    if os.path.exists(file_name):
        print(f"[跳过] 文件已存在: {file_name}")
        continue

    try:
        # 发送 GET 请求
        response = requests.get(url, timeout=10)

        # 检查 HTTP 状态码是否为 200 (成功)
        if response.status_code == 200:
            with open(file_name, 'wb') as f:
                f.write(response.content)
            print(f"[成功] 下载: {file_name}")
        elif response.status_code == 404:
             print(f"[跳过] 页面不存在 (404): {url}")
        else:
            print(f"[失败] {url}. 状态码: {response.status_code}")

    except requests.exceptions.RequestException as e:
        print(f"[错误] 请求 {url} 失败: {e}")
    
    # 随机延迟，保护服务器
    delay = random.uniform(MIN_DELAY, MAX_DELAY)
    time.sleep(delay)